package com.ermax.aircond.maintain.service;

import java.util.List;

import com.ermax.aircond.common.domain.UserDetail;
import com.ermax.aircond.common.domain.UserGroup;
import com.ermax.aircond.maintain.domain.Building;
import com.ermax.aircond.maintain.domain.Floor;
import com.ermax.aircond.maintain.domain.Machine;
import com.ermax.aircond.maintain.domain.Room;

public interface MaintainService {

	// User Group
	public UserGroup getUserGroupById(long id) throws Exception;
	
	public List<UserGroup> getAllUserGroups() throws Exception;

	public List<UserGroup> getUserGroups(String search) throws Exception;

	public void createUserGroup(UserGroup userGroup, String userName) throws Exception;

	public void updateUserGroup(UserGroup userGroup, String userName) throws Exception;

	public void deleteUserGroup(UserGroup userGroup) throws Exception;

	// User Detail
	public List<UserDetail> getAllUserDetails() throws Exception;

	public List<UserDetail> getUserDetails(String search) throws Exception;

	public List<UserDetail> getUserDetails(UserGroup userGroup) throws Exception;

	public List<UserDetail> getUserDetails(UserGroup userGroup, String search) throws Exception;

	public void createUserDetail(UserDetail userDetail, String userName) throws Exception;

	public void updateUserDetail(UserDetail userDetail, String userName) throws Exception;

	public void deleteUserDetail(UserDetail userDetail) throws Exception;

	// Building
	public Building getBuildingById(long id) throws Exception;
	
	public List<Building> getAllBuildings() throws Exception;

	public List<Building> getBuildings(String search) throws Exception;

	public void createBuilding(Building building, String userName) throws Exception;

	public void updateBuilding(Building building, String userName) throws Exception;

	public void deleteBuilding(Building building) throws Exception;

	// Floor
	public Floor getFloorById(long id) throws Exception;
	
	public List<Floor> getAllFloors() throws Exception;

	public List<Floor> getFloors(String search) throws Exception;

	public List<Floor> getFloors(Building building) throws Exception;

	public List<Floor> getFloors(Building building, String search) throws Exception;

	public void createFloor(Floor floor, String userName) throws Exception;

	public void updateFloor(Floor floor, String userName) throws Exception;

	public void deleteFloor(Floor floor) throws Exception;
	
	//Floor Plan	
	public Floor getFloorDetail(long id) throws Exception;

	// Room
	public Room getRoomById(long id) throws Exception;
	
	public List<Room> getAllRooms() throws Exception;

	public List<Room> getRooms(Building building) throws Exception;

	public List<Room> getRooms(Building building, Floor floor) throws Exception;

	public List<Room> getRooms(Building building, Floor floor, String search) throws Exception;

	public List<Room> getRooms(Floor floor) throws Exception;

	public List<Room> getRooms(Floor floor, String search) throws Exception;

	public List<Room> getRooms(String search) throws Exception;

	public void createRoom(Room room, String userName) throws Exception;

	public void updateRoom(Room room, String userName) throws Exception;

	public void deleteRoom(Room room) throws Exception;

	// Machine
	public List<Machine> getMachines() throws Exception;

	public List<Machine> getMachines(Building building) throws Exception;

	public List<Machine> getMachines(Building building, Floor floor) throws Exception;

	public List<Machine> getMachines(Building building, Floor floor, Room room) throws Exception;

	public List<Machine> getMachines(Building building, Floor floor, Room room, String search) throws Exception;

	public List<Machine> getMachines(Floor floor) throws Exception;

	public List<Machine> getMachines(Floor floor, Room room) throws Exception;

	public List<Machine> getMachines(Floor floor, Room room, String search) throws Exception;

	public List<Machine> getMachines(Room room) throws Exception;

	public List<Machine> getMachines(Room room, String search) throws Exception;

	public List<Machine> getMachines(String search) throws Exception;

	public void createMachine(Machine machine, String userName) throws Exception;

	public void updateMachine(Machine machine, String userName) throws Exception;

	public void deleteMachine(Machine machine) throws Exception;

}
